﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Alocacao.Communication;

namespace Sinacor.UI.Bovespa.Alocacao.Communication.Translator.DataContractToModel
{
    public class ErroAlocacaoComitente
    {
        public ErroAlocacaoComitente()
        { 
        }

        public Model.ErroAlocacaoComitente ToErroAlocacaoComitente(Bovespa.Alocacao.ErroAlocacaoComitente.ErroAlocacaoComitenteResponse from)
        {
            Model.ErroAlocacaoComitente to = new Sinacor.UI.Bovespa.Alocacao.Model.ErroAlocacaoComitente();

            to.ApelidoCliente = from.ApelidoCliente;
            to.CodigoNegociacao = from.CodigoNegociacao;
            to.DataPregao = from.DataPregao;
            if (from.Erro1 != null)
                to.Erro1 = ToErroAlocacao(from.Erro1);
            if (from.Erro2 != null)
                to.Erro2 = ToErroAlocacao(from.Erro2);
            if (from.Erro3 != null)
                to.Erro3 = ToErroAlocacao(from.Erro3);
            if(from.NaturezaOperacao.HasValue)
            {
                switch (from.NaturezaOperacao.Value)
                { 
                    case Sinacor.UI.Bovespa.Alocacao.Communication.Bovespa.Alocacao.ErroAlocacaoComitente.NaturezaOperacao.Compra:
                        to.NaturezaOperacao = Model.Enum.NaturezaOperacao.Compra;
                        break;
                    case Sinacor.UI.Bovespa.Alocacao.Communication.Bovespa.Alocacao.ErroAlocacaoComitente.NaturezaOperacao.CompraVenda:
                        to.NaturezaOperacao = Model.Enum.NaturezaOperacao.CompraVenda;
                        break;
                    case Sinacor.UI.Bovespa.Alocacao.Communication.Bovespa.Alocacao.ErroAlocacaoComitente.NaturezaOperacao.Venda:
                        to.NaturezaOperacao = Model.Enum.NaturezaOperacao.Venda;
                        break;
                }
            }
            to.NumeroNegocio = from.NumeroNegocio;

            return to;
        }

        public ModelCollection<Model.ErroAlocacaoComitente> ToErroAlocacaoComitente(List<Bovespa.Alocacao.ErroAlocacaoComitente.ErroAlocacaoComitenteResponse> from)
        {
            ModelCollection<Model.ErroAlocacaoComitente> to = new ModelCollection<Sinacor.UI.Bovespa.Alocacao.Model.ErroAlocacaoComitente>();

            foreach (Bovespa.Alocacao.ErroAlocacaoComitente.ErroAlocacaoComitenteResponse erroAlocacao in from)
                to.Add(ToErroAlocacaoComitente(erroAlocacao));

            return to;
        }

        public Model.ErroAlocacao ToErroAlocacao(Bovespa.Alocacao.ErroAlocacaoComitente.ErroAlocacao from)
        {
            Model.ErroAlocacao to = new Sinacor.UI.Bovespa.Alocacao.Model.ErroAlocacao();
            to.CodigoErro = from.CodigoErro;
            to.Descricao = from.Descricao;

            return to;
        }

    }
}
